package com.zh.note.config;

import com.zh.note.job.MyJob;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: zhanghuan
 * @date: 2025/8/27 15:01
 * @description: 定时任务配置
 */
// @Configuration
public class QuartzConfig {

    /**
     * 定义任务
     */
    @Bean
    public JobDetail jobDetail() {
        return JobBuilder.newJob(MyJob.class)
                .storeDurably() // 持久化
                .withIdentity("job1", "group1") // 唯一标识
                .usingJobData("count", 1) //数据初始化(共享数据)
                .build();
    }

    /**
     * 定义触发器
     *
     * cron表达式
     * - 表达式格式：秒 分 时 日 月 星期 年。例如： 0 0 13 24 1 ？ 2024 表示2024年星期几1月24日13点0时0分0秒
     * - 特殊符合
     * ｜- * 任意
     * ｜- ？ 只能出现在日和星期这两个位置，表示不确定的值
     * ｜- - 减号 表示一个范围。例如小时字段10-12 代表10-12点之间
     * ｜- ，逗号表示一个列表。例如：星期字段1，3，5 代表周一周三周五 三天
     * ｜- / 斜杠表示一个频率。例如秒字段0/15 就是从0秒开始，每隔15秒执行一次
     */
    @Bean
    public Trigger trigger() {

        String cron = "0/2 * * * * ? *"; // 每隔2秒执行一次
        return TriggerBuilder.newTrigger()
//                .startAt(DateBuilder.todayAt(13, 0, 0))
                .forJob(jobDetail())
                .withSchedule(CronScheduleBuilder.cronSchedule(cron)) //时间规则cron表达式
                .withIdentity("trigger1", "group") // 唯一标识
                .build();
    }
}
